KFE 第41期

一周推荐

JavaScript 包管理的前世今生

文章涉及了多知识点,不懂地方需要自己关注。

Yarn npm

Grab 前端技术指南(上)

Grab 前端技术指南(中)

Grab 前端技术指南(下)

内容虽然有点多,但是却可以更快帮助新员工熟悉Grab的开发技术栈。

前端指南

Chrome浏览器控制台(console)花式调试

console不止只有log这个方法,还有dir,time,assert等等调试的技巧

console

移动web资源整理

非常全的移动Web资源整理,简直造福程序员

移动web

一周技能加油站

相信很多前端er对cookie的印象,基本都是停留在set cookie的value以及expires,但是cookie其实远没有我们了解的这两个属性。今天回顾什么是cookie

什么是cookie?

  • Cookie 就是浏览器储存在用户电脑上的一小段文本文件
  • Cookie 是纯文本格式,不包含任何可执行的代码
  • Cookie 由键值对构成,由分号和空格隔开
  • Cookie 虽然是存储在浏览器,但是通常由服务器端进行设置
  • Cookie 的大小限制在 4kb 左右
  • expires

    expires用来设置cookie的失效时间,且是GMT 格式的时间(可以通过 new Date().toGMTString() 或者 new Date().toUTCString() 来获得)。

    cookie失效之后,document.cookie就访问不到这个cookie了,请求的时候也不会带上这个cookie。

  • max-age

    max-age也是控制cookie的失效时刻。在新的 http/1.1 协议中 expires 已经由 max-age 选项代替。

    *max-age 的值是一个以为单位时间段 (Cookie 失效时刻 = 创建时刻 + max-age)

优先级:同时设置了 max-age 和 expires,以 max-age 的时间为准

  • domain

    domain 默认值为设置该 Cookie 的网页所在的域名

  • path

    path 默认值为设置该 Cookie 的网页所在的目录。

    name、path 和 domain 是唯一标识一个 Cookie

  • secure

    secure选项用来设置 Cookie 只在确保安全的请求中才会发送。当请求是 HTTPS 或者其他安全协议时,包含 secure 选项的 Cookie 才能被保存到浏览器或者发送至服务器。

  • httpOnly

    选项用来设置 Cookie 是否能通过 js 去访问。默认情况下,Cookie 不会带 httpOnly 选项(即为空),客户端是可以通过 js 代码去访问(包括读取、修改、删除等)这个 Cookie 的。当 Cookie 带 httpOnly 选项时,客户端则无法通过 js 代码去访问(包括读取、修改、删除等)这个 Cookie。

    这种类型的 Cookie 只能通过服务端来设置,发送请求的时候,我们看到请求头还是会带上这个设置了 httpOnly 的 Cookie

可以设置 Cookie 的下列选项:expires、domain、path,各个键值对之间都要用 ; 和 空格 隔开

1
document.cookie='name=value; expires=Thu, 26 Feb 2116 11:50:25 GMT; domain=sankuai.com; path=/';
  • secure

    只有在 https 协议的网页中,客户端设置 secure 类型的 Cookie 才能成功

  • HttpOnly

    客户端中无法设置 HttpOnly 选项

重要点

  • 删除一个cookie,只要将一个cookie的max-age设置为0,就可以删除

  • Cookie 的作用域和作用路径

    只要满足作用域和作用路径,请求就会带上 Cookie,即使端口号不一样。

    子域会带上父域的cookie。

    子路径也会带上父路径的cookie,但是父路径无法带上子路径内的cookie。

参考:
Cookie 在前端中的实践

一周挑战(每周提供一道面试题)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
什么是函数节流?

由于在浏览器中,如果频繁的操作DOM,会相当消耗性能,通过函数节流的方式则可以大大减少对DOM的操作。

所谓函数节流,就是让一个函数无法在很短的时间间隔内连续调用,只有等到上一个函数执行后过了你规定的时间间隔,才能进行下一次调用。

具体实现:
// 方法一:JavaScript高级程序设计
var throttle = function(method, context){

clearTimeout(method.id)
method.id = setTimeout(function() {
method.apply(context)
}, 100)
}

// 调用
window.onresize = function() {
throttle(myFunc)
}

// 方法二: impress
var throttle = function(fn, delay) {
var timer = null
return function() {
var context = this, args = argument
clearTimeout(timer)
timer = setTimeout(function() {
fn.apply(context, args)
}, delay)
}
}

window.onresize = throttle(myFunc, 100)

一周段子

去姐家蹭饭,蒸螃蟹,姐夫夹了一个给我。四岁的小外甥女:”爸爸你吃“。”爸爸不吃,留给小姨和宝宝吃“。小外甥女:”爸爸你不能这样,你要对自己好一点,你天天跟牛似的还不吃饭,你累死了,会有别的叔叔花你的钱,住你的房子,睡你的老婆,打你的宝宝的!吃!赶紧吃

文章整理来自互联网,不作商业用途,如侵权,请联系删除